package utils


//对连接中传过来的数据进行一定处理
func DepackMail(buffer []byte, readerChannel chan []byte) []byte {
	length := len(buffer)

	var i int

	for i = 0; i < length; {
		//2位为尾标记（回车换行）
		if length < i+4 {
			break
		}
		var sIndex int
		for dump := i; dump < length-1; dump++ {
			//SMTP使用ASCII码格式，因此13是回车，10是换行，在此，我们以回车换行来划分命令或不同行
			if buffer[dump] == byte(13) && buffer[dump+1] == byte(10) {
				sIndex = dump

			}
		}
		if sIndex <= 0 {
			break
		}
		//fmt.Println(i)
		//fmt.Println(sIndex)
		//fmt.Println(buffer)
		data := buffer[i:sIndex]

		//向管道发送数据
		readerChannel <- data
		i = sIndex + 2
	}

	//全部处理完毕返回空包
	if i == length {
		return make([]byte, 0)
	}
	//未处理完毕返回 剩余包
	return buffer[i:]
}